package com.example.rabbitdemo.config.exchange;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;

/**
 * @author 周宇
 * @version 1.0 date: 2019/7/23 17:02
 * @description: TopiceExchange包含通配符的路由模式， 1.routekey必须是一串字符，用句号（.） 隔开 2.#表示0个或若干个关键字，*表示一个关键字
 * @Copyright (C), 2017-2019, 深圳市⾦证引擎科技股份有限公司
 */
public class TopicExchangeConfig {
    //声明一个Topic类型的交换机
    @Bean
    public TopicExchange directExchange() {
        return new TopicExchange("Exchange_Topic");
    }

    //声明两个队列
    @Bean
    public Queue queue10() {
        return new Queue("queue10");
    }

    @Bean
    public Queue queue11() {
        return new Queue("queue11");
    }

    //将队列queue10绑定到交换器上，并指定binding key为*.orange.*
    @Bean
    public Binding bindingQueue8() {
        return BindingBuilder.bind(queue10()).to(directExchange()).with("*.orange.*");
    }

    //将队列queue11绑定到交换器上，并指定binding key为*.*.rabbit
    @Bean
    public Binding bindingQueue9() {
        return BindingBuilder.bind(queue11()).to(directExchange()).with("*.*.rabbit");
    }

}
